package com.ruoyi.spspublic.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.spspublic.domain.TMisBlob;
import com.ruoyi.spspublic.domain.dto.PartymanFlowFileDto;
import com.ruoyi.spspublic.domain.dto.TMisBlobDownloadDTO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 业务附件Service接口
 *
 * @author wangwei
 * @date 2023-06-19
 */
public interface ITMisBlobService {
  /**
   * 查询业务附件
   *
   * @param ctId 业务附件ID
   * @return 业务附件
   */
  public TMisBlob selectTMisBlobById(String ctId);

  /**
   * 查询业务附件列表
   *
   * @param tMisBlob 业务附件
   * @return 业务附件集合
   */
  public List<TMisBlob> selectTMisBlobList(TMisBlob tMisBlob);

  /**
   * 新增业务附件
   *
   * @param tMisBlob 业务附件
   * @return 结果
   */
  public int insertTMisBlob(TMisBlob tMisBlob);

  /**
   * 修改业务附件
   *
   * @param tMisBlob 业务附件
   * @return 结果
   */
  public int updateTMisBlob(TMisBlob tMisBlob);

  /**
   * 批量删除业务附件
   *
   * @param ctIds 需要删除的业务附件ID
   * @return 结果
   */
  public int deleteTMisBlobByIds(String[] ctIds);

  /**
   * 删除业务附件信息
   *
   * @param ctId 业务附件ID
   * @return 结果
   */
  public int deleteTMisBlobById(String ctId);

  public int deleteTMisBlobByIdPs(String ctIdp);

  /**
   * 批量上传文件
   *
   * @param tMisBlob
   * @param file
   */
  AjaxResult batchUpload(TMisBlob tMisBlob, MultipartFile file);

  /**
   * 下载文件
   *
   * @param tMisBlob
   * @return
   */
  AjaxResult download(TMisBlobDownloadDTO tMisBlob, HttpServletResponse response);

  /**
   * 加密路径
   *
   * @param tMisBlob
   * @return
   */
  AjaxResult handlePreview(TMisBlobDownloadDTO tMisBlob);

  /**
   * 获取文件地址
   * @param blob
   *
   * @return
   */
  String getFilePath(TMisBlob blob);

  /**
   * 生成一次性下载token
   *
   * @param list
   * @return
   */
  void generateDownloadToken(String uuid, List<TMisBlob> list);

  AjaxResult uploadFileImage(MultipartFile file, String funno);

  /**
   * 根据TmisBlob查找
   *
   * @param tMisBlob
   * @return
   */
  List<TMisBlob> selectTMisBlobListByTMisBlob(TMisBlob tMisBlob);

  /**
   * 党员发展流程附件
   *
   * @param partymanFlowFileDto
   * @return
   */
  List<PartymanFlowFileDto> partymanFlowFileList(PartymanFlowFileDto partymanFlowFileDto);

  /**
   * 不做校验的文件上传，在从监管侧同步附件的时候可以用这个方法
   * @param filePath
   */
  void simpleUpload(String filePath, TMisBlob tMisBlob);


}
